Chapter 1: Design an ATM System (ငွေထုတ်စက် ဒီဇိုင်းဆွဲခြင်း)
အေ သင်ခန်းစာမှာ ကျွန်တော်ရို့ သင်ထားရေ OOP Concept တိကို အသုံးချပနာ ATM စနစ်တစ်ခုကို ဇာပိုင် တည်ဆောက်ဖို့လဲဆိုစွာ လေ့လာကတ်ပါဖို့။
၁။ လိုအပ်ချက်တိ (Requirements)
- User က Credit Card ထည့်နိုင်ရပါဖို့။
- PIN နံပါတ် မှန်မှ အလုပ်လုပ်ရပါဖို့။
- ငွေထုတ်ဖို့ဆိုကေ လက်ကျန်ငွေ (Balance) လောက်မှ ထုတ်ပီးရပါဖို့။
၂။ Class ခွဲခြားခြင်း (Designing Classes)
အဓိက ပါဝင်ဖို့ အရာဝတ္ထုတိကို Class ခွဲကြည့်ကတ်ပါဖို့။
- ATM: စက်ကြီးတစ်ခုလုံးကို ကိုယ်စားပြုပါရေ။
- BankAccount: User တစ်ယောက်ချင်းစီဧ့ ဘဏ်အကောင့်ပါ။
- Card: အကောင့်ထဲကို ဝင်ဖို့သော့ပါ။
၃။ လုပ်ဆောင်ပုံ အဆင့်ဆင့် (Logic Flow)
- Insert Card: Card ကို ဖတ်မေ။
- Validate PIN: PIN မှန်/မမှန် စစ်မေ။
- Check Balance: ထုတ်ချင်ရေ ပမာဏက Balance ထက် နည်းလား/များလား စစ်မေ။
- Dispense Cash: ဖေ့ချာထုတ်ပီးမေ၊ Balance ကို လျှော့မေ။
၄။ Pseudocode Implementation
CLASS BankAccount
ATTRIBUTE balance = 1000
ATTRIBUTE pin_code = 1234
METHOD verifyPIN(input_pin)
IF input_pin == pin_code THEN
RETURN True
ELSE
RETURN False
END IF
END METHOD
METHOD withdraw(amount)
IF amount > balance THEN
PRINT "Error: ဖေ့ချာမလောက်ပါ"
ELSE
balance = balance - amount
PRINT "Successful! ကျန်ငွေ: " + balance
END IF
END METHOD
END CLASS
CLASS ATM
METHOD start()
PRINT "ကတ်ထည့်ပါ..."
input_pin = GET_USER_INPUT("PIN ရိုက်ပါ")
IF account.verifyPIN(input_pin) == True THEN
amount = GET_USER_INPUT("ဖေ့ချာပမာဏ ရိုက်ပါ")
account.withdraw(amount)
ELSE
PRINT "PIN မှားယွင်းနီပါရေ"
END IF
END METHOD
END CLASS
သင်ခန်းစာ အကျဉ်းချုပ်
- OOP Application: Class တိ (ATM, BankAccount) ခွဲခြားပြီး တည်ဆောက်ခြင်း။
- Encapsulation: PIN နန့် Balance ကို အပြင်ကနီ တိုင်းမပြင်နိုင်အောင် Method တိနန့် ထိန်းချုပ်ခြင်း။
လေ့ကျင့်ခန်း (Exercises)
- Deposit Feature: အကယ်လို့ ATM မှာ ငွေပြန်သွင်းလို့ရရေ (Deposit) စနစ် ပါလာဖို့ဆိုကေ ဇာ Class မှာ
deposit()method ကို ထည့်သင့်လဲ? (ATMလားBankAccountလား? ဇာဖြစ်လို့လဲ?) - Card Limit: တစ်နိကို အများဆုံး ၅ သိန်းရာ ထုတ်လို့ရဖို့ဆိုရေ စည်းကမ်း (Limit) သတ်မှတ်ချင်ကေ Logic ကို ဇာနားမှာ ပြင်ရွီးဖို့လဲ?